RouterOS y Automatización
Hay tareas que, siendo sinceros, no tienen ningún glamour técnico, pero son justo las que más guerra dan cuando se hacen a mano. Copiar ficheros a un NAS, comprobar que han llegado, lanzar una notificación por correo y cruzar los dedos para que nadie tenga que acordarse de hacerlo a última hora. No es la parte más vistosa de una infraestructura, pero sí una de esas pequeñas rutinas que, cuando fallan, dejan claro lo importantes que eran.
En entornos donde MikroTik ya está metido hasta la cocina, solemos pensar en routing, firewalling, VPN, colas, balanceo o monitorización básica. Pero RouterOS también tiene ese punto de “navaja suiza” que permite resolver automatizaciones muy concretas sin tener que meter otra pieza más en la arquitectura. Y ahí es donde entran los scripts, modestos, a veces poco elegantes, pero increíblemente útiles cuando lo que buscas es que una tarea ocurra siempre igual, sin despistes y sin intervención manual.
En esta entrada voy a hablar de un script en MikroTik que automatiza el envío de la configuración del propio sistema RouterOS a un NAS y, una vez completado el proceso, lanza un correo de aviso. La idea es resolver una necesidad real con herramientas que ya tienes funcionando en tu red (aunque ya hablamos de LibreNMS y Oxidized), de forma razonable, práctica y bastante efectiva.
Porque al final, en muchas instalaciones, la diferencia entre un entorno bien llevado y otro que vive al borde del caos no está en tener la tecnología más sofisticada, sino en automatizar bien las tareas repetitivas. Si cada cierto tiempo hay que mover archivos, centralizarlos en almacenamiento de red y dejar constancia de que el trabajo se ha hecho, lo lógico es que eso no dependa de que alguien se acuerde. Y menos todavía si hablamos de ficheros que forman parte de procesos operativos, registros, exportaciones programadas o cualquier otra información que conviene sacar del equipo origen y dejar a buen recaudo.
Además, este tipo de automatización tiene algo que a los perfiles técnicos nos gusta especialmente, reduce fricción. Menos pasos manuales, menos margen para el error humano y más trazabilidad. El correo final no es un adorno, es la pieza que cierra el circuito, confirma ejecución, da visibilidad y permite saber rápidamente si el proceso ha ido como debía o si toca revisar algo.
Lo interesante aquí no es solo el script en sí, sino el enfoque. Usar MikroTik como punto de automatización para tareas auxiliares demuestra que muchas veces se le puede sacar bastante más partido del que solemos aprovechar en el día a día. No siempre hace falta desplegar una solución externa, levantar otro servicio o complicar la topología para resolver problemas bastante concretos. A veces basta con entender bien las capacidades del equipo, conocer las limitaciones de RouterOS y encajar las piezas con un poco de criterio.
La gracia, como casi siempre, está en hacerlo con cabeza, controlando rutas, permisos, método de transferencia, tiempos, errores y notificaciones. Porque automatizar no es solo hacer que algo ocurra solo, es conseguir que ocurra bien, que sea repetible y que, cuando falle, te enteres rápido. Y justo por eso merece la pena detenerse en un caso como este, que puede parecer pequeño, pero representa muy bien ese tipo de automatización útil que ahorra tiempo, ordena procesos y evita más de un susto.
Requerimientos Envío y Almacenamiento
Para realizar este trabajo necesitaremos crear un usuario en nuestro NAS con acceso de escritura donde dejaremos los ficheros y un recurso compartido vía FTP / SFTP, por ejemplo:

En el router Mikrotik configuraremos una cuenta para el envío de correos. Desde Tools -> Email:

Si usamos una cuenta tipo GMAIL, deberemos crear una APP para poder usarla para el envío de correos. En un entorno corporativo es algo más sencillo:

Hacer una prueba de envío para comprobar que todo funciona antes de configurar el script:

Script Backup Configuración RouterOS
El script para realizar el backup de la configuración de RouterOS lo generaremos desde System -> Scripts :

Le damos un nombre y podemos rellenar el comentario. En la sección Source agregaremos el código a ejecutar:

Los valores a preparar:
- IP o Nombre DNS del NAS (ftpHost)
- Nombre de usuario FTP (ftpUser)
- Contraseña usuario FTP (ftpPass)
- Share a carpeta compartida (ftpPath. Es una ruta FTP así que simplemente agregamos /NOMBRECARPETA )
- Email que recibirá la notificación (mailTo)
- Contraseña para el Backup (backupPassword)
Os dejamos el código:
:local routerName [/system identity get name]
:local ftpHost "NOMBRENAS"
:local ftpUser "USUARIO-FTP"
:local ftpPass "PASSWORD-USUARIO-FTP"
# Ruta FTP, no ruta UNC
:local ftpPath "/BACKUPMIKROTIK"
:local mailTo "CORREO-ALERTAS"
:local backupPassword "PASSWORD-FICHERO-BACKUP"
:local d [/system clock get date]
:local t [/system clock get time]
:local yyyy [:pick $d 7 11]
:local mon [:pick $d 0 3]
:local dd [:pick $d 4 6]
:local hh [:pick $t 0 2]
:local mi [:pick $t 3 5]
:local ss [:pick $t 6 8]
:local baseName ("BackupMikrotik-" . $yyyy . $mon . $dd . "-" . $hh . $mi . $ss)
:local fileName ($baseName . ".backup")
:local remoteFile ($ftpPath . "/" . $fileName)
:log info "BackupMikrotik: inicio"
:local uploaded false
:do {
:log info ("BackupMikrotik: creando " . $fileName)
/system backup save name=$baseName password=$backupPassword
:delay 5s
:if ([:len [/file find where name=$fileName]] = 0) do={
:log error ("BackupMikrotik: no existe el fichero " . $fileName)
:error "backup_no_creado"
}
:log info ("BackupMikrotik: subiendo por FTP a " . $remoteFile)
/tool fetch address=$ftpHost mode=ftp user=$ftpUser password=$ftpPass upload=yes src-path=$fileName dst-path=$remoteFile
:set uploaded true
:log info "BackupMikrotik: subida FTP correcta"
} on-error={
:set uploaded false
:log error "BackupMikrotik: error en backup o subida FTP"
}
:if ($uploaded = true) do={
:do {
/tool e-mail send to=$mailTo subject=($routerName . " - BackupMikrotik OK") body=("Backup correcto: " . $fileName . "\r\nDestino: " . $remoteFile . "\r\nFecha: " . $d . " " . $t)
:log info "BackupMikrotik: correo OK enviado"
} on-error={
:log error "BackupMikrotik: no se pudo enviar el correo OK"
}
:if ([:len [/file find where name=$fileName]] > 0) do={
/file remove [find where name=$fileName]
:log info ("BackupMikrotik: borrado local " . $fileName)
}
} else={
:do {
/tool e-mail send to=$mailTo subject=($routerName . " - BackupMikrotikSwitch ERROR") body=("Error creando o subiendo backup\r\nArchivo: " . $fileName . "\r\nDestino: " . $remoteFile . "\r\nFecha: " . $d . " " . $t)
:log info "BackupMikrotik: correo ERROR enviado"
} on-error={
:log error "BackupMikrotik: no se pudo enviar el correo ERROR"
}
}
:log info "BackupMikrotik: fin"
Para validarlo pulsar Run Script:

Una vez validado, deberéis programar su ejecución periódica desde System > Scheduler:

Y creamos una nueva programación que llamará al script (/system script run BackupMikrotik) y cambiamos el valor Interval:

Herramientas propias de tu Router Mikrotik
Al final, un script como este no pretende reinventar nada, pero sí resolver de forma limpia una necesidad bastante común, mover ficheros clave a un NAS sin depender de intervención manual y cerrar el proceso con una notificación por correo. Dicho así parece simple, y de hecho esa es parte de su valor. Cuando una automatización está bien planteada, deja de hacer ruido y simplemente cumple.
Desde el punto de vista técnico, lo interesante no es solo que MikroTik pueda hacerlo, sino que pueda integrarse en este tipo de flujo con bastante solvencia si el escenario está bien definido. Para muchos entornos, eso significa aprovechar infraestructura existente, reducir piezas intermedias y centralizar pequeñas tareas operativas en un equipo que ya forma parte del día a día de la red. Menos dependencia de procesos manuales y más consistencia en algo que, aunque rutinario, conviene que salga bien siempre.
También deja una lectura bastante clara, no todo tiene que resolverse con plataformas enormes ni con automatizaciones sobredimensionadas. A veces una solución compacta, entendible y fácil de mantener es justo lo que hace falta. Y si además deja constancia mediante correo, mejor todavía, porque una tarea automática que nadie puede verificar acaba generando la misma desconfianza que una tarea manual mal hecha.
En definitiva, este tipo de scripting en MikroTik encaja muy bien en esa filosofía práctica que tantos administradores valoran, sacar rendimiento real a lo que ya tienes, eliminar pasos innecesarios y convertir tareas repetitivas en procesos fiables. No será la automatización más espectacular del mundo, pero sí una de esas que, una vez la pones en marcha, te preguntas por qué no la habías montado antes.
Fin del Artículo. ¡Cuéntanos algo en los Comentarios!



